package message_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/models"
	"giv-vue-blog/models/res"
	"giv-vue-blog/service/common"
)

//TODO: 通过管理员查看所有聊天记录还未完全实现，不能拿到所有的用户id 后期修改 现在现存数据库中拿取数据

// MessageListView 当是管理员时显示所有用户的聊天记录
// @Summary 显示所有用户的聊天记录
// @Description 当管理员调用时，返回所有用户的聊天记录列表
// @Tags 消息管理
// @Accept json
// @Produce json
// @Param pageNo query int false "页码" default(1)
// @Param pageSize query int false "每页数量" default(10)
// @Success 200 {object} res.Response{}
// @Router /api/msg_all [get]
func (MessageApi) MessageListView(c *gin.Context) {
	//PageInfo 这是一个公共查询用的结构体 包含排序和分页
	var ad models.PageInfo
	err := c.ShouldBindQuery(&ad)
	if err != nil {
		res.FailedWithError(err, &ad, c)
		return
	}
	//_claims, _ := c.Get("claims")
	//claims := _claims.(*jwts.CustomClaims)
	//key := strconv.Itoa(int(claims.UserID)) + "_" + strconv.Itoa(int(claims.UserID))
	//values, err := global.Redis.Get(key).Result()
	//if err != nil {
	//	global.Log.Errorf("failed to get message list from Redis: %s", err.Error())
	//	res.FailedWithMsg("从redis读取消息失败", c)
	//	return
	//}

	// 如果 Redis 中的消息过期或不存在，则从数据库中查询并缓存到 Redis 中
	//if values == "" {
	//调用service层写好的分页查询和排序接口
	list, count, err := common.CommonList(models.MessageModel{}, common.Option{
		PageInfo: ad,
		Debug:    true,
	})
	if err != nil {
		res.FailedWithMsg("查看消息列表失败", c)
		return
	}
	// 将消息列表存储到 Redis 中，并设置过期时间
	//data, err := json.Marshal(list)
	//if err != nil {
	//	global.Log.Errorf("failed to marshal message list: %s", err.Error())
	//	res.FailedWithMsg("消息序列化化到redis失败", c)
	//	return
	//}
	//err = global.Redis.Set(key, data, time.Hour*96).Err()
	//if err != nil {
	//	global.Log.Errorf("failed to set message list to Redis: %s", err.Error())
	//	res.FailedWithMsg("消息保存到redis失败", c)
	//	return
	//}
	res.OkWithList(list, count, c)
	return
	//} else {
	//	fmt.Println()
	//	// 解析 JSON 字符串
	//	var msg models.MessageModel
	//	err := json.Unmarshal([]byte(values), &msg)
	//	if err != nil {
	//		global.Log.Errorf("failed to unmarshal message list: %s", err.Error())
	//		res.FailedWithMsg("从redis反序列化读取消息失败", c)
	//		return
	//	}
	//	res.OkWithData(msg, c)
	//	return
	//}
}
